include(libweb_generators)
include(vulkan)
include(skia)
include(SDL3)

find_package(unofficial-angle CONFIG)
if(unofficial-angle_FOUND)
    set(ANGLE_TARGETS unofficial::angle::libEGL unofficial::angle::libGLESv2)
else()
    find_package(PkgConfig)
    pkg_check_modules(angle REQUIRED IMPORTED_TARGET angle)
    set(ANGLE_TARGETS PkgConfig::angle)
endif()

set(SOURCES
    Animations/Animatable.cpp
    Animations/Animation.cpp
    Animations/AnimationEffect.cpp
    Animations/AnimationPlaybackEvent.cpp
    Animations/AnimationTimeline.cpp
    Animations/DocumentTimeline.cpp
    Animations/KeyframeEffect.cpp
    Animations/PseudoElementParsing.cpp
    ARIA/AriaData.cpp
    ARIA/ARIAMixin.cpp
    ARIA/AttributeNames.cpp
    ARIA/Roles.cpp
    ARIA/RoleType.cpp
    ARIA/StateAndProperties.cpp
    Bindings/AudioConstructor.cpp
    Bindings/HostDefined.cpp
    Bindings/ImageConstructor.cpp
    Bindings/Intrinsics.cpp
    Bindings/LocationConstructor.cpp
    Bindings/MainThreadVM.cpp
    Bindings/OptionConstructor.cpp
    Bindings/PlatformObject.cpp
    Bindings/PrincipalHostDefined.cpp
    Bindings/SyntheticHostDefined.cpp
    Clipboard/Clipboard.cpp
    Clipboard/ClipboardEvent.cpp
    Clipboard/ClipboardItem.cpp
    Clipboard/SystemClipboard.cpp
    Compression/CompressionStream.cpp
    Compression/DecompressionStream.cpp
    ContentSecurityPolicy/BlockingAlgorithms.cpp
    ContentSecurityPolicy/Directives/BaseUriDirective.cpp
    ContentSecurityPolicy/Directives/ChildSourceDirective.cpp
    ContentSecurityPolicy/Directives/ConnectSourceDirective.cpp
    ContentSecurityPolicy/Directives/DefaultSourceDirective.cpp
    ContentSecurityPolicy/Directives/Directive.cpp
    ContentSecurityPolicy/Directives/DirectiveFactory.cpp
    ContentSecurityPolicy/Directives/DirectiveOperations.cpp
    ContentSecurityPolicy/Directives/FontSourceDirective.cpp
    ContentSecurityPolicy/Directives/FormActionDirective.cpp
    ContentSecurityPolicy/Directives/FrameAncestorsDirective.cpp
    ContentSecurityPolicy/Directives/FrameSourceDirective.cpp
    ContentSecurityPolicy/Directives/ImageSourceDirective.cpp
    ContentSecurityPolicy/Directives/KeywordSources.cpp
    ContentSecurityPolicy/Directives/KeywordTrustedTypes.cpp
    ContentSecurityPolicy/Directives/ManifestSourceDirective.cpp
    ContentSecurityPolicy/Directives/MediaSourceDirective.cpp
    ContentSecurityPolicy/Directives/Names.cpp
    ContentSecurityPolicy/Directives/ObjectSourceDirective.cpp
    ContentSecurityPolicy/Directives/ReportToDirective.cpp
    ContentSecurityPolicy/Directives/ReportUriDirective.cpp
    ContentSecurityPolicy/Directives/SandboxDirective.cpp
    ContentSecurityPolicy/Directives/ScriptSourceAttributeDirective.cpp
    ContentSecurityPolicy/Directives/ScriptSourceDirective.cpp
    ContentSecurityPolicy/Directives/ScriptSourceElementDirective.cpp
    ContentSecurityPolicy/Directives/SerializedDirective.cpp
    ContentSecurityPolicy/Directives/SourceExpression.cpp
    ContentSecurityPolicy/Directives/StyleSourceAttributeDirective.cpp
    ContentSecurityPolicy/Directives/StyleSourceDirective.cpp
    ContentSecurityPolicy/Directives/StyleSourceElementDirective.cpp
    ContentSecurityPolicy/Directives/WebRTCDirective.cpp
    ContentSecurityPolicy/Directives/WorkerSourceDirective.cpp
    ContentSecurityPolicy/Policy.cpp
    ContentSecurityPolicy/PolicyList.cpp
    ContentSecurityPolicy/SecurityPolicyViolationEvent.cpp
    ContentSecurityPolicy/SerializedPolicy.cpp
    ContentSecurityPolicy/Violation.cpp
    Cookie/Cookie.cpp
    Cookie/ParsedCookie.cpp
    CookieStore/CookieChangeEvent.cpp
    CookieStore/CookieStore.cpp
    CredentialManagement/Credential.cpp
    CredentialManagement/CredentialsContainer.cpp
    CredentialManagement/FederatedCredential.cpp
    CredentialManagement/PasswordCredential.cpp
    Crypto/Crypto.cpp
    Crypto/CryptoAlgorithms.cpp
    Crypto/CryptoBindings.cpp
    Crypto/CryptoKey.cpp
    Crypto/KeyAlgorithms.cpp
    Crypto/SubtleCrypto.cpp
    CSS/Angle.cpp
    CSS/AnimationEvent.cpp
    CSS/BooleanExpression.cpp
    CSS/CalculatedOr.cpp
    CSS/CascadedProperties.cpp
    CSS/Clip.cpp
    CSS/ComputedProperties.cpp
    CSS/CountersSet.cpp
    CSS/CSS.cpp
    CSS/CSSAnimation.cpp
    CSS/CSSConditionRule.cpp
    CSS/CSSCounterStyleRule.cpp
    CSS/CSSDescriptors.cpp
    CSS/CSSFontFaceDescriptors.cpp
    CSS/CSSFontFaceRule.cpp
    CSS/CSSGroupingRule.cpp
    CSS/CSSImageValue.cpp
    CSS/CSSImportRule.cpp
    CSS/CSSKeyframeRule.cpp
    CSS/CSSKeyframesRule.cpp
    CSS/CSSKeywordValue.cpp
    CSS/CSSLayerBlockRule.cpp
    CSS/CSSLayerStatementRule.cpp
    CSS/CSSMarginRule.cpp
    CSS/CSSMathClamp.cpp
    CSS/CSSMathInvert.cpp
    CSS/CSSMathMax.cpp
    CSS/CSSMathMin.cpp
    CSS/CSSMathNegate.cpp
    CSS/CSSMathProduct.cpp
    CSS/CSSMathSum.cpp
    CSS/CSSMathValue.cpp
    CSS/CSSMatrixComponent.cpp
    CSS/CSSMediaRule.cpp
    CSS/CSSNamespaceRule.cpp
    CSS/CSSNestedDeclarations.cpp
    CSS/CSSNumericArray.cpp
    CSS/CSSNumericValue.cpp
    CSS/CSSPageRule.cpp
    CSS/CSSPageDescriptors.cpp
    CSS/CSSPerspective.cpp
    CSS/CSSPropertyRule.cpp
    CSS/CSSRotate.cpp
    CSS/CSSRule.cpp
    CSS/CSSRuleList.cpp
    CSS/CSSScale.cpp
    CSS/CSSSkew.cpp
    CSS/CSSSkewX.cpp
    CSS/CSSSkewY.cpp
    CSS/CSSStyleDeclaration.cpp
    CSS/CSSStyleProperties.cpp
    CSS/CSSStyleRule.cpp
    CSS/CSSStyleSheet.cpp
    CSS/CSSStyleValue.cpp
    CSS/CSSSupportsRule.cpp
    CSS/CSSTransformComponent.cpp
    CSS/CSSTransformValue.cpp
    CSS/CSSTransition.cpp
    CSS/CSSTranslate.cpp
    CSS/CSSUnitValue.cpp
    CSS/CSSUnparsedValue.cpp
    CSS/CSSVariableReferenceValue.cpp
    CSS/Descriptor.cpp
    CSS/Display.cpp
    CSS/EdgeRect.cpp
    CSS/Fetch.cpp
    CSS/Flex.cpp
    CSS/FontFace.cpp
    CSS/FontFaceSet.cpp
    CSS/Frequency.cpp
    CSS/GridTrackPlacement.cpp
    CSS/GridTrackSize.cpp
    CSS/Interpolation.cpp
    CSS/InvalidationSet.cpp
    CSS/Length.cpp
    CSS/LengthBox.cpp
    CSS/MediaList.cpp
    CSS/MediaQuery.cpp
    CSS/MediaQueryList.cpp
    CSS/MediaQueryListEvent.cpp
    CSS/Number.cpp
    CSS/NumericType.cpp
    CSS/PageSelector.cpp
    CSS/ParsedFontFace.cpp
    CSS/Parser/ArbitrarySubstitutionFunctions.cpp
    CSS/Parser/ComponentValue.cpp
    CSS/Parser/DescriptorParsing.cpp
    CSS/Parser/ErrorReporter.cpp
    CSS/Parser/GradientParsing.cpp
    CSS/Parser/Helpers.cpp
    CSS/Parser/MediaParsing.cpp
    CSS/Parser/Parser.cpp
    CSS/Parser/PropertyParsing.cpp
    CSS/Parser/RuleContext.cpp
    CSS/Parser/RuleParsing.cpp
    CSS/Parser/SelectorParsing.cpp
    CSS/Parser/Syntax.cpp
    CSS/Parser/SyntaxParsing.cpp
    CSS/Parser/Token.cpp
    CSS/Parser/Tokenizer.cpp
    CSS/Parser/Types.cpp
    CSS/Parser/ValueParsing.cpp
    CSS/PreferredColorScheme.cpp
    CSS/PreferredContrast.cpp
    CSS/PreferredMotion.cpp
    CSS/Ratio.cpp
    CSS/Resolution.cpp
    CSS/Screen.cpp
    CSS/ScreenOrientation.cpp
    CSS/Selector.cpp
    CSS/SelectorEngine.cpp
    CSS/Serialize.cpp
    CSS/Size.cpp
    CSS/Sizing.cpp
    CSS/StyleComputer.cpp
    CSS/StyleInvalidation.cpp
    CSS/StyleInvalidationData.cpp
    CSS/StyleProperty.cpp
    CSS/StylePropertyMapReadOnly.cpp
    CSS/StylePropertyMap.cpp
    CSS/StyleSheet.cpp
    CSS/StyleSheetIdentifier.cpp
    CSS/StyleSheetList.cpp
    CSS/StyleValues/AbstractImageStyleValue.cpp
    CSS/StyleValues/AnchorStyleValue.cpp
    CSS/StyleValues/AnchorSizeStyleValue.cpp
    CSS/StyleValues/AngleStyleValue.cpp
    CSS/StyleValues/BackgroundSizeStyleValue.cpp
    CSS/StyleValues/BasicShapeStyleValue.cpp
    CSS/StyleValues/BorderImageSliceStyleValue.cpp
    CSS/StyleValues/BorderRadiusStyleValue.cpp
    CSS/StyleValues/CalculatedStyleValue.cpp
    CSS/StyleValues/ColorFunctionStyleValue.cpp
    CSS/StyleValues/ColorMixStyleValue.cpp
    CSS/StyleValues/ColorSchemeStyleValue.cpp
    CSS/StyleValues/ColorStyleValue.cpp
    CSS/StyleValues/ConicGradientStyleValue.cpp
    CSS/StyleValues/ContentStyleValue.cpp
    CSS/StyleValues/CounterDefinitionsStyleValue.cpp
    CSS/StyleValues/CounterStyleValue.cpp
    CSS/StyleValues/CursorStyleValue.cpp
    CSS/StyleValues/CustomIdentStyleValue.cpp
    CSS/StyleValues/DimensionStyleValue.cpp
    CSS/StyleValues/DisplayStyleValue.cpp
    CSS/StyleValues/EasingStyleValue.cpp
    CSS/StyleValues/EdgeStyleValue.cpp
    CSS/StyleValues/FilterValueListStyleValue.cpp
    CSS/StyleValues/FontSourceStyleValue.cpp
    CSS/StyleValues/FontStyleStyleValue.cpp
    CSS/StyleValues/GridAutoFlowStyleValue.cpp
    CSS/StyleValues/GridTemplateAreaStyleValue.cpp
    CSS/StyleValues/GridTrackPlacementStyleValue.cpp
    CSS/StyleValues/GridTrackSizeListStyleValue.cpp
    CSS/StyleValues/HSLColorStyleValue.cpp
    CSS/StyleValues/HWBColorStyleValue.cpp
    CSS/StyleValues/ImageStyleValue.cpp
    CSS/StyleValues/IntegerStyleValue.cpp
    CSS/StyleValues/KeywordStyleValue.cpp
    CSS/StyleValues/LCHLikeColorStyleValue.cpp
    CSS/StyleValues/LabLikeColorStyleValue.cpp
    CSS/StyleValues/LengthStyleValue.cpp
    CSS/StyleValues/LightDarkStyleValue.cpp
    CSS/StyleValues/LinearGradientStyleValue.cpp
    CSS/StyleValues/MathDepthStyleValue.cpp
    CSS/StyleValues/NumberStyleValue.cpp
    CSS/StyleValues/OpenTypeTaggedStyleValue.cpp
    CSS/StyleValues/PositionStyleValue.cpp
    CSS/StyleValues/RGBColorStyleValue.cpp
    CSS/StyleValues/RadialGradientStyleValue.cpp
    CSS/StyleValues/RectStyleValue.cpp
    CSS/StyleValues/RepeatStyleStyleValue.cpp
    CSS/StyleValues/ScrollbarColorStyleValue.cpp
    CSS/StyleValues/ShadowStyleValue.cpp
    CSS/StyleValues/ShorthandStyleValue.cpp
    CSS/StyleValues/StyleValue.cpp
    CSS/StyleValues/StyleValueList.cpp
    CSS/StyleValues/TextUnderlinePositionStyleValue.cpp
    CSS/StyleValues/TransformationStyleValue.cpp
    CSS/StyleValues/TransitionStyleValue.cpp
    CSS/StyleValues/UnicodeRangeStyleValue.cpp
    CSS/StyleValues/UnresolvedStyleValue.cpp
    CSS/Supports.cpp
    CSS/SyntaxHighlighter/SyntaxHighlighter.cpp
    CSS/SystemColor.cpp
    CSS/Time.cpp
    CSS/Transformation.cpp
    CSS/TransitionEvent.cpp
    CSS/URL.cpp
    CSS/ValueType.cpp
    CSS/VisualViewport.cpp
    DOM/AbortController.cpp
    DOM/AbortSignal.cpp
    DOM/AbstractElement.cpp
    DOM/AbstractRange.cpp
    DOM/AccessibilityTreeNode.cpp
    DOM/AdoptedStyleSheets.cpp
    DOM/Attr.cpp
    DOM/CDATASection.cpp
    DOM/CharacterData.cpp
    DOM/Comment.cpp
    DOM/CustomEvent.cpp
    DOM/Document.cpp
    DOM/DocumentFragment.cpp
    DOM/DocumentLoadEventDelayer.cpp
    DOM/DocumentLoading.cpp
    DOM/DocumentObserver.cpp
    DOM/DocumentType.cpp
    DOM/DOMEventListener.cpp
    DOM/DOMImplementation.cpp
    DOM/DOMTokenList.cpp
    DOM/EditingHostManager.cpp
    DOM/Element.cpp
    DOM/ElementByIdMap.cpp
    DOM/ElementFactory.cpp
    DOM/Event.cpp
    DOM/EventDispatcher.cpp
    DOM/EventTarget.cpp
    DOM/HTMLCollection.cpp
    DOM/IDLEventListener.cpp
    DOM/LiveNodeList.cpp
    DOM/MutationObserver.cpp
    DOM/MutationRecord.cpp
    DOM/MutationType.cpp
    DOM/NamedNodeMap.cpp
    DOM/Node.cpp
    DOM/NodeFilter.cpp
    DOM/NodeIterator.cpp
    DOM/NodeList.cpp
    DOM/NodeOperations.cpp
    DOM/ParentNode.cpp
    DOM/Position.cpp
    DOM/ProcessingInstruction.cpp
    DOM/PseudoElement.cpp
    DOM/QualifiedName.cpp
    DOM/Range.cpp
    DOM/ShadowRoot.cpp
    DOM/Slot.cpp
    DOM/Slottable.cpp
    DOM/StaticNodeList.cpp
    DOM/StaticRange.cpp
    DOM/StyleElementUtils.cpp
    DOM/StyleInvalidator.cpp
    DOM/Text.cpp
    DOM/TreeWalker.cpp
    DOM/Utils.cpp
    DOM/XMLDocument.cpp
    DOMURL/DOMURL.cpp
    DOMURL/URLSearchParams.cpp
    DOMURL/URLSearchParamsIterator.cpp
    Dump.cpp
    Editing/CommandNames.cpp
    Editing/Commands.cpp
    Editing/ExecCommand.cpp
    Editing/Internal/Algorithms.cpp
    Encoding/TextDecoder.cpp
    Encoding/TextEncoder.cpp
    Encoding/TextEncoderCommon.cpp
    Encoding/TextEncoderStream.cpp
    EncryptedMediaExtensions/Algorithms.cpp
    EncryptedMediaExtensions/MediaKeySystemAccess.cpp
    EncryptedMediaExtensions/NavigatorEncryptedMediaExtensionsPartial.cpp
    EntriesAPI/FileSystemEntry.cpp
    EventTiming/PerformanceEventTiming.cpp
    Fetch/Body.cpp
    Fetch/BodyInit.cpp
    Fetch/Enums.cpp
    Fetch/Fetching/Checks.cpp
    Fetch/Fetching/FetchedDataReceiver.cpp
    Fetch/Fetching/Fetching.cpp
    Fetch/Fetching/PendingResponse.cpp
    Fetch/Fetching/RefCountedFlag.cpp
    Fetch/FetchMethod.cpp
    Fetch/Headers.cpp
    Fetch/HeadersIterator.cpp
    Fetch/Infrastructure/FetchAlgorithms.cpp
    Fetch/Infrastructure/FetchController.cpp
    Fetch/Infrastructure/FetchParams.cpp
    Fetch/Infrastructure/FetchRecord.cpp
    Fetch/Infrastructure/FetchTimingInfo.cpp
    Fetch/Infrastructure/HTTP.cpp
    Fetch/Infrastructure/HTTP/Bodies.cpp
    Fetch/Infrastructure/HTTP/Headers.cpp
    Fetch/Infrastructure/HTTP/Methods.cpp
    Fetch/Infrastructure/HTTP/Requests.cpp
    Fetch/Infrastructure/HTTP/Responses.cpp
    Fetch/Infrastructure/HTTP/Statuses.cpp
    Fetch/Infrastructure/IncrementalReadLoopReadRequest.cpp
    Fetch/Infrastructure/MimeTypeBlocking.cpp
    Fetch/Infrastructure/NetworkPartitionKey.cpp
    Fetch/Infrastructure/NoSniffBlocking.cpp
    Fetch/Infrastructure/PortBlocking.cpp
    Fetch/Infrastructure/Task.cpp
    Fetch/Infrastructure/URL.cpp
    Fetch/Request.cpp
    Fetch/Response.cpp
    FileAPI/Blob.cpp
    FileAPI/BlobURLStore.cpp
    FileAPI/File.cpp
    FileAPI/FileList.cpp
    FileAPI/FileReader.cpp
    FileAPI/FileReaderSync.cpp
    Gamepad/EventNames.cpp
    Gamepad/Gamepad.cpp
    Gamepad/GamepadButton.cpp
    Gamepad/GamepadEvent.cpp
    Gamepad/GamepadHapticActuator.cpp
    Gamepad/NavigatorGamepad.cpp
    Geolocation/Geolocation.cpp
    Serial/Serial.cpp
    Serial/SerialPort.cpp
    Geolocation/GeolocationCoordinates.cpp
    Geolocation/GeolocationPosition.cpp
    Geolocation/GeolocationPositionError.cpp
    Geometry/DOMMatrix.cpp
    Geometry/DOMMatrixReadOnly.cpp
    Geometry/DOMPoint.cpp
    Geometry/DOMPointReadOnly.cpp
    Geometry/DOMQuad.cpp
    Geometry/DOMRect.cpp
    Geometry/DOMRectList.cpp
    Geometry/DOMRectReadOnly.cpp
    GPC/GlobalPrivacyControl.cpp
    GraphemeEdgeTracker.cpp
    HighResolutionTime/Performance.cpp
    HighResolutionTime/TimeOrigin.cpp
    HTML/AbstractWorker.cpp
    HTML/AnimatedBitmapDecodedImageData.cpp
    HTML/AnimationFrameCallbackDriver.cpp
    HTML/AttributeNames.cpp
    HTML/AudioTrack.cpp
    HTML/AudioTrackList.cpp
    HTML/AutocompleteElement.cpp
    HTML/BarProp.cpp
    HTML/BeforeUnloadEvent.cpp
    HTML/BroadcastChannel.cpp
    HTML/BrowsingContext.cpp
    HTML/BrowsingContextGroup.cpp
    HTML/Canvas/CanvasDrawImage.cpp
    HTML/Canvas/CanvasPath.cpp
    HTML/Canvas/CanvasSettings.cpp
    HTML/Canvas/CanvasState.cpp
    HTML/Canvas/SerializeBitmap.cpp
    HTML/CanvasGradient.cpp
    HTML/CanvasPattern.cpp
    HTML/CanvasRenderingContext2D.cpp
    HTML/CloseEvent.cpp
    HTML/CloseWatcher.cpp
    HTML/CloseWatcherManager.cpp
    HTML/CommandEvent.cpp
    HTML/CORSSettingAttribute.cpp
    HTML/CrossOrigin/AbstractOperations.cpp
    HTML/CrossOrigin/Reporting.cpp
    HTML/CustomElements/CustomElementDefinition.cpp
    HTML/CustomElements/CustomElementName.cpp
    HTML/CustomElements/CustomElementReactionNames.cpp
    HTML/CustomElements/CustomElementRegistry.cpp
    HTML/CustomElements/CustomStateSet.cpp
    HTML/DataTransfer.cpp
    HTML/DataTransferItem.cpp
    HTML/DataTransferItemList.cpp
    HTML/Dates.cpp
    HTML/DecodedImageData.cpp
    HTML/DedicatedWorkerGlobalScope.cpp
    HTML/DocumentState.cpp
    HTML/DOMParser.cpp
    HTML/DOMStringList.cpp
    HTML/DOMStringMap.cpp
    HTML/DragDataStore.cpp
    HTML/DragEvent.cpp
    HTML/ElementInternals.cpp
    HTML/EmbedderPolicy.cpp
    HTML/ErrorEvent.cpp
    HTML/EventHandler.cpp
    HTML/EventLoop/EventLoop.cpp
    HTML/EventLoop/Task.cpp
    HTML/EventLoop/TaskQueue.cpp
    HTML/EventNames.cpp
    HTML/EventSource.cpp
    HTML/FileFilter.cpp
    HTML/Focus.cpp
    HTML/FormAssociatedElement.cpp
    HTML/FormControlInfrastructure.cpp
    HTML/FormDataEvent.cpp
    HTML/GlobalEventHandlers.cpp
    HTML/HashChangeEvent.cpp
    HTML/History.cpp
    HTML/HTMLAllCollection.cpp
    HTML/HTMLAnchorElement.cpp
    HTML/HTMLAreaElement.cpp
    HTML/HTMLAudioElement.cpp
    HTML/HTMLBaseElement.cpp
    HTML/HTMLBodyElement.cpp
    HTML/HTMLBRElement.cpp
    HTML/HTMLButtonElement.cpp
    HTML/HTMLCanvasElement.cpp
    HTML/HTMLDataElement.cpp
    HTML/HTMLDataListElement.cpp
    HTML/HTMLDetailsElement.cpp
    HTML/HTMLDialogElement.cpp
    HTML/HTMLDirectoryElement.cpp
    HTML/HTMLDivElement.cpp
    HTML/HTMLDListElement.cpp
    HTML/HTMLDocument.cpp
    HTML/HTMLElement.cpp
    HTML/HTMLEmbedElement.cpp
    HTML/HTMLFieldSetElement.cpp
    HTML/HTMLFontElement.cpp
    HTML/HTMLFormControlsCollection.cpp
    HTML/HTMLFormElement.cpp
    HTML/HTMLFrameElement.cpp
    HTML/HTMLFrameSetElement.cpp
    HTML/HTMLHeadElement.cpp
    HTML/HTMLHeadingElement.cpp
    HTML/HTMLHRElement.cpp
    HTML/HTMLHtmlElement.cpp
    HTML/HTMLHyperlinkElementUtils.cpp
    HTML/HTMLIFrameElement.cpp
    HTML/HTMLImageElement.cpp
    HTML/HTMLInputElement.cpp
    HTML/HTMLLabelElement.cpp
    HTML/HTMLLegendElement.cpp
    HTML/HTMLLIElement.cpp
    HTML/HTMLLinkElement.cpp
    HTML/HTMLMapElement.cpp
    HTML/HTMLMarqueeElement.cpp
    HTML/HTMLMediaElement.cpp
    HTML/HTMLMenuElement.cpp
    HTML/HTMLMetaElement.cpp
    HTML/HTMLMeterElement.cpp
    HTML/HTMLModElement.cpp
    HTML/HTMLObjectElement.cpp
    HTML/HTMLOListElement.cpp
    HTML/HTMLOptGroupElement.cpp
    HTML/HTMLOptionElement.cpp
    HTML/HTMLOptionsCollection.cpp
    HTML/HTMLOrSVGElement.cpp
    HTML/HTMLOutputElement.cpp
    HTML/HTMLParagraphElement.cpp
    HTML/HTMLParamElement.cpp
    HTML/HTMLPictureElement.cpp
    HTML/HTMLPreElement.cpp
    HTML/HTMLProgressElement.cpp
    HTML/HTMLQuoteElement.cpp
    HTML/HTMLScriptElement.cpp
    HTML/HTMLSelectElement.cpp
    HTML/HTMLSlotElement.cpp
    HTML/HTMLSourceElement.cpp
    HTML/HTMLSpanElement.cpp
    HTML/HTMLStyleElement.cpp
    HTML/HTMLSummaryElement.cpp
    HTML/HTMLTableCaptionElement.cpp
    HTML/HTMLTableCellElement.cpp
    HTML/HTMLTableColElement.cpp
    HTML/HTMLTableElement.cpp
    HTML/HTMLTableRowElement.cpp
    HTML/HTMLTableSectionElement.cpp
    HTML/HTMLTemplateElement.cpp
    HTML/HTMLTextAreaElement.cpp
    HTML/HTMLTimeElement.cpp
    HTML/HTMLTitleElement.cpp
    HTML/HTMLTrackElement.cpp
    HTML/HTMLUListElement.cpp
    HTML/HTMLUnknownElement.cpp
    HTML/HTMLVideoElement.cpp
    HTML/ImageBitmap.cpp
    HTML/ImageData.cpp
    HTML/ImageRequest.cpp
    HTML/ListOfAvailableImages.cpp
    HTML/Location.cpp
    HTML/MediaError.cpp
    HTML/MessageChannel.cpp
    HTML/MessageEvent.cpp
    HTML/MessagePort.cpp
    HTML/MimeType.cpp
    HTML/MimeTypeArray.cpp
    HTML/Navigable.cpp
    HTML/NavigableContainer.cpp
    HTML/NavigateEvent.cpp
    HTML/Navigation.cpp
    HTML/NavigationCurrentEntryChangeEvent.cpp
    HTML/NavigationDestination.cpp
    HTML/NavigationHistoryEntry.cpp
    HTML/NavigationObserver.cpp
    HTML/NavigationParams.cpp
    HTML/NavigationTransition.cpp
    HTML/Navigator.cpp
    HTML/NavigatorBeacon.cpp
    HTML/NavigatorID.cpp
    HTML/Numbers.cpp
    HTML/OffscreenCanvas.cpp
    HTML/OffscreenCanvasRenderingContext2D.cpp
    HTML/PageTransitionEvent.cpp
    HTML/Parser/Entities.cpp
    HTML/Parser/HTMLEncodingDetection.cpp
    HTML/Parser/HTMLParser.cpp
    HTML/Parser/HTMLToken.cpp
    HTML/Parser/HTMLTokenizer.cpp
    HTML/Parser/ListOfActiveFormattingElements.cpp
    HTML/Parser/StackOfOpenElements.cpp
    HTML/Path2D.cpp
    HTML/Plugin.cpp
    HTML/PluginArray.cpp
    HTML/PolicyContainers.cpp
    HTML/PopoverInvokerElement.cpp
    HTML/PopStateEvent.cpp
    HTML/PotentialCORSRequest.cpp
    HTML/PromiseRejectionEvent.cpp
    HTML/RadioNodeList.cpp
    HTML/RenderingThread.cpp
    HTML/SandboxingFlagSet.cpp
    HTML/Scripting/Agent.cpp
    HTML/Scripting/ClassicScript.cpp
    HTML/Scripting/Environments.cpp
    HTML/Scripting/EnvironmentSettingsSnapshot.cpp
    HTML/Scripting/ExceptionReporter.cpp
    HTML/Scripting/Fetching.cpp
    HTML/Scripting/ImportMap.cpp
    HTML/Scripting/ImportMapParseResult.cpp
    HTML/Scripting/ModuleMap.cpp
    HTML/Scripting/ModuleScript.cpp
    HTML/Scripting/Script.cpp
    HTML/Scripting/SerializedEnvironmentSettingsObject.cpp
    HTML/Scripting/SimilarOriginWindowAgent.cpp
    HTML/Scripting/SyntheticRealmSettings.cpp
    HTML/Scripting/TemporaryExecutionContext.cpp
    HTML/Scripting/WindowEnvironmentSettingsObject.cpp
    HTML/Scripting/WorkerAgent.cpp
    HTML/Scripting/WorkerEnvironmentSettingsObject.cpp
    HTML/SelectedFile.cpp
    HTML/SelectItem.cpp
    HTML/SerializedPolicyContainer.cpp
    HTML/SessionHistoryEntry.cpp
    HTML/SessionHistoryTraversalQueue.cpp
    HTML/ShadowRealmGlobalScope.cpp
    HTML/SharedResourceRequest.cpp
    HTML/SharedWorker.cpp
    HTML/SharedWorkerGlobalScope.cpp
    HTML/SourceSet.cpp
    HTML/SourceSnapshotParams.cpp
    HTML/Storage.cpp
    HTML/StorageEvent.cpp
    HTML/StructuredSerialize.cpp
    HTML/SubmitEvent.cpp
    HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
    HTML/TagNames.cpp
    HTML/TextMetrics.cpp
    HTML/TextTrack.cpp
    HTML/TextTrackCue.cpp
    HTML/TextTrackCueList.cpp
    HTML/TextTrackList.cpp
    HTML/TextTrackObserver.cpp
    HTML/Timer.cpp
    HTML/TimeRanges.cpp
    HTML/ToggleEvent.cpp
    HTML/TokenizedFeatures.cpp
    HTML/TrackEvent.cpp
    HTML/TraversableNavigable.cpp
    HTML/UniversalGlobalScope.cpp
    HTML/UserActivation.cpp
    HTML/ValidityState.cpp
    HTML/VideoTrack.cpp
    HTML/VideoTrackList.cpp
    HTML/WebViewHints.cpp
    HTML/Window.cpp
    HTML/WindowEventHandlers.cpp
    HTML/WindowOrWorkerGlobalScope.cpp
    HTML/WindowProxy.cpp
    HTML/Worker.cpp
    HTML/WorkerAgentParent.cpp
    HTML/WorkerDebugConsoleClient.cpp
    HTML/WorkerGlobalScope.cpp
    HTML/WorkerLocation.cpp
    HTML/WorkerNavigator.cpp
    HTML/WorkletGlobalScope.cpp
    HTML/XMLSerializer.cpp
    IndexedDB/IDBCursor.cpp
    IndexedDB/IDBDatabase.cpp
    IndexedDB/IDBFactory.cpp
    IndexedDB/IDBIndex.cpp
    IndexedDB/IDBKeyRange.cpp
    IndexedDB/IDBObjectStore.cpp
    IndexedDB/IDBOpenDBRequest.cpp
    IndexedDB/IDBRecord.cpp
    IndexedDB/IDBRequest.cpp
    IndexedDB/IDBTransaction.cpp
    IndexedDB/IDBVersionChangeEvent.cpp
    IndexedDB/Internal/Algorithms.cpp
    IndexedDB/Internal/Database.cpp
    IndexedDB/Internal/Index.cpp
    IndexedDB/Internal/Key.cpp
    IndexedDB/Internal/ObjectStore.cpp
    IndexedDB/Internal/RequestList.cpp
    Infra/ByteSequences.cpp
    Infra/JSON.cpp
    Infra/Strings.cpp
    Internals/InternalAnimationTimeline.cpp
    Internals/InternalGamepad.cpp
    Internals/Internals.cpp
    Internals/InternalsBase.cpp
    Internals/WebUI.cpp
    IntersectionObserver/IntersectionObserver.cpp
    IntersectionObserver/IntersectionObserverEntry.cpp
    Layout/AudioBox.cpp
    Layout/AvailableSpace.cpp
    Layout/BlockContainer.cpp
    Layout/BlockFormattingContext.cpp
    Layout/Box.cpp
    Layout/BreakNode.cpp
    Layout/CanvasBox.cpp
    Layout/CheckBox.cpp
    Layout/FieldSetBox.cpp
    Layout/FlexFormattingContext.cpp
    Layout/FormattingContext.cpp
    Layout/GridFormattingContext.cpp
    Layout/ImageBox.cpp
    Layout/ImageProvider.cpp
    Layout/InlineFormattingContext.cpp
    Layout/InlineLevelIterator.cpp
    Layout/InlineNode.cpp
    Layout/Label.cpp
    Layout/LabelableNode.cpp
    Layout/LayoutState.cpp
    Layout/LegendBox.cpp
    Layout/LineBox.cpp
    Layout/LineBoxFragment.cpp
    Layout/LineBuilder.cpp
    Layout/ListItemBox.cpp
    Layout/ListItemMarkerBox.cpp
    Layout/NavigableContainerViewport.cpp
    Layout/Node.cpp
    Layout/RadioButton.cpp
    Layout/ReplacedBox.cpp
    Layout/SVGBox.cpp
    Layout/SVGClipBox.cpp
    Layout/SVGForeignObjectBox.cpp
    Layout/SVGFormattingContext.cpp
    Layout/SVGGeometryBox.cpp
    Layout/SVGGraphicsBox.cpp
    Layout/SVGImageBox.cpp
    Layout/SVGMaskBox.cpp
    Layout/SVGSVGBox.cpp
    Layout/SVGTextBox.cpp
    Layout/SVGTextPathBox.cpp
    Layout/TableFormattingContext.cpp
    Layout/TableGrid.cpp
    Layout/TableWrapper.cpp
    Layout/TextNode.cpp
    Layout/TreeBuilder.cpp
    Layout/VideoBox.cpp
    Layout/Viewport.cpp
    Loader/ContentFilter.cpp
    Loader/FileRequest.cpp
    Loader/GeneratedPagesLoader.cpp
    Loader/LoadRequest.cpp
    Loader/ProxyMappings.cpp
    Loader/Resource.cpp
    Loader/ResourceLoader.cpp
    MathML/MathMLElement.cpp
    MathML/TagNames.cpp
    MediaCapabilitiesAPI/MediaCapabilities.cpp
    MediaSourceExtensions/BufferedChangeEvent.cpp
    MediaSourceExtensions/EventNames.cpp
    MediaSourceExtensions/ManagedMediaSource.cpp
    MediaSourceExtensions/ManagedSourceBuffer.cpp
    MediaSourceExtensions/MediaSource.cpp
    MediaSourceExtensions/MediaSourceHandle.cpp
    MediaSourceExtensions/SourceBuffer.cpp
    MediaSourceExtensions/SourceBufferList.cpp
    MimeSniff/MimeType.cpp
    MimeSniff/Resource.cpp
    MixedContent/AbstractOperations.cpp
    Namespace.cpp
    NavigationTiming/EntryNames.cpp
    NavigationTiming/PerformanceNavigation.cpp
    NavigationTiming/PerformanceTiming.cpp
    NotificationsAPI/Notification.cpp
    Page/DragAndDropEventHandler.cpp
    Page/EventHandler.cpp
    Page/InputEvent.cpp
    Page/Page.cpp
    Painting/AudioPaintable.cpp
    Painting/BackgroundPainting.cpp
    Painting/BackingStoreManager.cpp
    Painting/BorderPainting.cpp
    Painting/BorderRadiiData.cpp
    Painting/BorderRadiusCornerClipper.cpp
    Painting/BordersData.cpp
    Painting/BoxModelMetrics.cpp
    Painting/CanvasPaintable.cpp
    Painting/CheckBoxPaintable.cpp
    Painting/ClipFrame.cpp
    Painting/DisplayList.cpp
    Painting/DisplayListCommand.cpp
    Painting/DisplayListPlayerSkia.cpp
    Painting/DisplayListRecorder.cpp
    Painting/DisplayListRecordingContext.cpp
    Painting/FieldSetPaintable.cpp
    Painting/GradientPainting.cpp
    Painting/ImagePaintable.cpp
    Painting/LabelablePaintable.cpp
    Painting/MarkerPaintable.cpp
    Painting/MediaPaintable.cpp
    Painting/NavigableContainerViewportPaintable.cpp
    Painting/Paintable.cpp
    Painting/PaintableBox.cpp
    Painting/PaintableFragment.cpp
    Painting/RadioButtonPaintable.cpp
    Painting/ScrollFrame.cpp
    Painting/ScrollState.cpp
    Painting/ShadowPainting.cpp
    Painting/StackingContext.cpp
    Painting/SVGClipPaintable.cpp
    Painting/SVGForeignObjectPaintable.cpp
    Painting/SVGGraphicsPaintable.cpp
    Painting/SVGMaskable.cpp
    Painting/SVGMaskPaintable.cpp
    Painting/SVGPaintable.cpp
    Painting/SVGPathPaintable.cpp
    Painting/SVGSVGPaintable.cpp
    Painting/TableBordersPainting.cpp
    Painting/TextPaintable.cpp
    Painting/VideoPaintable.cpp
    Painting/ViewportPaintable.cpp
    PerformanceTimeline/EntryTypes.cpp
    PerformanceTimeline/EventNames.cpp
    PerformanceTimeline/PerformanceEntry.cpp
    PerformanceTimeline/PerformanceObserver.cpp
    PerformanceTimeline/PerformanceObserverEntryList.cpp
    PermissionsPolicy/AutoplayAllowlist.cpp
    PixelUnits.cpp
    Platform/AudioCodecPlugin.cpp
    Platform/AudioCodecPluginAgnostic.cpp
    Platform/EventLoopPlugin.cpp
    Platform/EventLoopPluginSerenity.cpp
    Platform/FontPlugin.cpp
    Platform/ImageCodecPlugin.cpp
    Platform/Timer.cpp
    Platform/TimerSerenity.cpp
    ReferrerPolicy/AbstractOperations.cpp
    ReferrerPolicy/ReferrerPolicy.cpp
    RequestIdleCallback/IdleDeadline.cpp
    ResizeObserver/ResizeObservation.cpp
    ResizeObserver/ResizeObserver.cpp
    ResizeObserver/ResizeObserverEntry.cpp
    ResizeObserver/ResizeObserverSize.cpp
    ResourceTiming/PerformanceResourceTiming.cpp
    SecureContexts/AbstractOperations.cpp
    Selection/Selection.cpp
    ServiceWorker/CacheStorage.cpp
    ServiceWorker/EventNames.cpp
    ServiceWorker/Job.cpp
    ServiceWorker/Registration.cpp
    ServiceWorker/ServiceWorker.cpp
    ServiceWorker/ServiceWorkerContainer.cpp
    ServiceWorker/ServiceWorkerGlobalScope.cpp
    ServiceWorker/ServiceWorkerRecord.cpp
    ServiceWorker/ServiceWorkerRegistration.cpp
    SRI/SRI.cpp
    StorageAPI/NavigatorStorage.cpp
    StorageAPI/StorageBottle.cpp
    StorageAPI/StorageEndpoint.cpp
    StorageAPI/StorageKey.cpp
    StorageAPI/StorageManager.cpp
    StorageAPI/StorageShed.cpp
    StorageAPI/StorageShelf.cpp
    Streams/AbstractOperations.cpp
    Streams/ByteLengthQueuingStrategy.cpp
    Streams/CountQueuingStrategy.cpp
    Streams/GenericTransformStream.cpp
    Streams/ReadableByteStreamController.cpp
    Streams/ReadableStream.cpp
    Streams/ReadableStreamAsyncIterator.cpp
    Streams/ReadableStreamBYOBReader.cpp
    Streams/ReadableStreamBYOBRequest.cpp
    Streams/ReadableStreamDefaultController.cpp
    Streams/ReadableStreamDefaultReader.cpp
    Streams/ReadableStreamGenericReader.cpp
    Streams/ReadableStreamOperations.cpp
    Streams/ReadableStreamPipeTo.cpp
    Streams/ReadableStreamTee.cpp
    Streams/Transformer.cpp
    Streams/TransformStream.cpp
    Streams/TransformStreamDefaultController.cpp
    Streams/TransformStreamOperations.cpp
    Streams/UnderlyingSink.cpp
    Streams/UnderlyingSource.cpp
    Streams/WritableStream.cpp
    Streams/WritableStreamDefaultController.cpp
    Streams/WritableStreamDefaultWriter.cpp
    Streams/WritableStreamOperations.cpp
    SVG/AttributeNames.cpp
    SVG/AttributeParser.cpp
    SVG/Path.cpp
    SVG/SVGAElement.cpp
    SVG/SVGAnimatedEnumeration.cpp
    SVG/SVGAnimatedLength.cpp
    SVG/SVGAnimatedNumber.cpp
    SVG/SVGAnimatedRect.cpp
    SVG/SVGAnimatedString.cpp
    SVG/SVGAnimatedTransformList.cpp
    SVG/SVGAnimationElement.cpp
    SVG/SVGCircleElement.cpp
    SVG/SVGClipPathElement.cpp
    SVG/SVGDecodedImageData.cpp
    SVG/SVGDefsElement.cpp
    SVG/SVGDescElement.cpp
    SVG/SVGElement.cpp
    SVG/SVGEllipseElement.cpp
    SVG/SVGFEBlendElement.cpp
    SVG/SVGFECompositeElement.cpp
    SVG/SVGFEFloodElement.cpp
    SVG/SVGFEGaussianBlurElement.cpp
    SVG/SVGFEImageElement.cpp
    SVG/SVGFEMergeElement.cpp
    SVG/SVGFEMergeNodeElement.cpp
    SVG/SVGFEOffsetElement.cpp
    SVG/SVGFilterElement.cpp
    SVG/SVGFitToViewBox.cpp
    SVG/SVGForeignObjectElement.cpp
    SVG/SVGGElement.cpp
    SVG/SVGGeometryElement.cpp
    SVG/SVGGradientElement.cpp
    SVG/SVGGraphicsElement.cpp
    SVG/SVGImageElement.cpp
    SVG/SVGLength.cpp
    SVG/SVGLinearGradientElement.cpp
    SVG/SVGLineElement.cpp
    SVG/SVGMaskElement.cpp
    SVG/SVGMetadataElement.cpp
    SVG/SVGPathElement.cpp
    SVG/SVGPolygonElement.cpp
    SVG/SVGPolylineElement.cpp
    SVG/SVGRadialGradientElement.cpp
    SVG/SVGRectElement.cpp
    SVG/SVGScriptElement.cpp
    SVG/SVGStopElement.cpp
    SVG/SVGStyleElement.cpp
    SVG/SVGSVGElement.cpp
    SVG/SVGSymbolElement.cpp
    SVG/SVGTextContentElement.cpp
    SVG/SVGTextElement.cpp
    SVG/SVGTextPathElement.cpp
    SVG/SVGTextPositioningElement.cpp
    SVG/SVGTitleElement.cpp
    SVG/SVGTransform.cpp
    SVG/SVGTransformList.cpp
    SVG/SVGTSpanElement.cpp
    SVG/SVGUseElement.cpp
    SVG/SVGViewElement.cpp
    SVG/TagNames.cpp
    TrustedTypes/InjectionSink.cpp
    TrustedTypes/RequireTrustedTypesForDirective.cpp
    TrustedTypes/TrustedHTML.cpp
    TrustedTypes/TrustedScript.cpp
    TrustedTypes/TrustedScriptURL.cpp
    TrustedTypes/TrustedTypePolicy.cpp
    TrustedTypes/TrustedTypePolicyFactory.cpp
    UIEvents/CompositionEvent.cpp
    UIEvents/EventNames.cpp
    UIEvents/FocusEvent.cpp
    UIEvents/InputEvent.cpp
    UIEvents/InputTypes.cpp
    UIEvents/KeyboardEvent.cpp
    UIEvents/MouseEvent.cpp
    UIEvents/PointerEvent.cpp
    UIEvents/TextEvent.cpp
    UIEvents/UIEvent.cpp
    UIEvents/WheelEvent.cpp
    URLPattern/URLPattern.cpp
    UserTiming/PerformanceMark.cpp
    UserTiming/PerformanceMeasure.cpp
    ViewTransition/ViewTransition.cpp
    WebAssembly/Global.cpp
    WebAssembly/Instance.cpp
    WebAssembly/Memory.cpp
    WebAssembly/Module.cpp
    WebAssembly/Table.cpp
    WebAssembly/WebAssembly.cpp
    WebAudio/AnalyserNode.cpp
    WebAudio/AudioBuffer.cpp
    WebAudio/AudioBufferSourceNode.cpp
    WebAudio/AudioContext.cpp
    WebAudio/AudioDestinationNode.cpp
    WebAudio/AudioListener.cpp
    WebAudio/AudioNode.cpp
    WebAudio/AudioParam.cpp
    WebAudio/AudioScheduledSourceNode.cpp
    WebAudio/BaseAudioContext.cpp
    WebAudio/BiquadFilterNode.cpp
    WebAudio/ChannelMergerNode.cpp
    WebAudio/ChannelSplitterNode.cpp
    WebAudio/ConstantSourceNode.cpp
    WebAudio/DelayNode.cpp
    WebAudio/DynamicsCompressorNode.cpp
    WebAudio/GainNode.cpp
    WebAudio/MediaElementAudioSourceNode.cpp
    WebAudio/OfflineAudioContext.cpp
    WebAudio/OscillatorNode.cpp
    WebAudio/PannerNode.cpp
    WebAudio/PeriodicWave.cpp
    WebAudio/ScriptProcessorNode.cpp
    WebAudio/StereoPannerNode.cpp
    WebDriver/Actions.cpp
    WebDriver/Capabilities.cpp
    WebDriver/Client.cpp
    WebDriver/Contexts.cpp
    WebDriver/ElementLocationStrategies.cpp
    WebDriver/ElementReference.cpp
    WebDriver/Error.cpp
    WebDriver/ExecuteScript.cpp
    WebDriver/HeapTimer.cpp
    WebDriver/InputSource.cpp
    WebDriver/InputState.cpp
    WebDriver/JSON.cpp
    WebDriver/Proxy.cpp
    WebDriver/Response.cpp
    WebDriver/Screenshot.cpp
    WebDriver/TimeoutsConfiguration.cpp
    WebDriver/UserPrompt.cpp
    WebGL/EventNames.cpp
    WebGL/Extensions/ANGLEInstancedArrays.cpp
    WebGL/Extensions/EXTBlendMinMax.cpp
    WebGL/Extensions/EXTColorBufferFloat.cpp
    WebGL/Extensions/OESVertexArrayObject.cpp
    WebGL/Extensions/WebGLCompressedTextureS3tc.cpp
    WebGL/Extensions/WebGLDrawBuffers.cpp
    WebGL/Extensions/WebGLVertexArrayObjectOES.cpp
    WebGL/OpenGLContext.cpp
    WebGL/WebGL2RenderingContext.cpp
    WebGL/WebGL2RenderingContextImpl.cpp
    WebGL/WebGLActiveInfo.cpp
    WebGL/WebGLBuffer.cpp
    WebGL/WebGLContextAttributes.cpp
    WebGL/WebGLContextEvent.cpp
    WebGL/WebGLFramebuffer.cpp
    WebGL/WebGLObject.cpp
    WebGL/WebGLProgram.cpp
    WebGL/WebGLQuery.cpp
    WebGL/WebGLRenderbuffer.cpp
    WebGL/WebGLRenderingContext.cpp
    WebGL/WebGLRenderingContextImpl.cpp
    WebGL/WebGLSampler.cpp
    WebGL/WebGLShader.cpp
    WebGL/WebGLShaderPrecisionFormat.cpp
    WebGL/WebGLSync.cpp
    WebGL/WebGLTexture.cpp
    WebGL/WebGLTransformFeedback.cpp
    WebGL/WebGLUniformLocation.cpp
    WebGL/WebGLVertexArrayObject.cpp
    WebIDL/AbstractOperations.cpp
    WebIDL/AsyncIterator.cpp
    WebIDL/Buffers.cpp
    WebIDL/CallbackType.cpp
    WebIDL/DOMException.cpp
    WebIDL/ObservableArray.cpp
    WebIDL/OverloadResolution.cpp
    WebIDL/Promise.cpp
    WebIDL/Tracing.cpp
    WebSockets/WebSocket.cpp
    WebVTT/VTTCue.cpp
    WebVTT/VTTRegion.cpp
    Worker/WebWorkerClient.cpp
    XHR/EventNames.cpp
    XHR/FormData.cpp
    XHR/FormDataIterator.cpp
    XHR/ProgressEvent.cpp
    XHR/XMLHttpRequest.cpp
    XHR/XMLHttpRequestEventTarget.cpp
    XHR/XMLHttpRequestUpload.cpp
    XLink/AttributeNames.cpp
    XML/XMLDocumentBuilder.cpp
)

compile_ipc(Worker/WebWorkerClient.ipc Worker/WebWorkerClientEndpoint.h)
compile_ipc(Worker/WebWorkerServer.ipc Worker/WebWorkerServerEndpoint.h)

invoke_cpp_generator(
    "AriaRoles.cpp"
    Lagom::GenerateAriaRoles
    "${CMAKE_CURRENT_SOURCE_DIR}/ARIA/AriaRoles.json"
    "ARIA/AriaRoles.h"
    "ARIA/AriaRoles.cpp"
    arguments -j "${CMAKE_CURRENT_SOURCE_DIR}/ARIA/AriaRoles.json"
)

generate_css_implementation()

generate_html_implementation()

set(GENERATED_SOURCES
    ARIA/AriaRoles.cpp
    CSS/DefaultStyleSheetSource.cpp
    CSS/DescriptorID.cpp
    CSS/Enums.cpp
    CSS/EnvironmentVariable.cpp
    CSS/GeneratedCSSNumericFactoryMethods.cpp
    CSS/GeneratedCSSNumericFactoryMethods.idl
    CSS/GeneratedCSSStyleProperties.cpp
    CSS/GeneratedCSSStyleProperties.idl
    CSS/Keyword.cpp
    CSS/MathFunctions.cpp
    CSS/MediaFeatureID.cpp
    CSS/PropertyID.cpp
    CSS/PseudoClass.cpp
    CSS/PseudoElement.cpp
    CSS/QuirksModeStyleSheetSource.cpp
    CSS/TransformFunctions.cpp
    CSS/Units.cpp
    MathML/MathMLStyleSheetSource.cpp
    SVG/SVGStyleSheetSource.cpp
    Worker/WebWorkerClientEndpoint.h
    Worker/WebWorkerServerEndpoint.h
    HTML/Parser/NamedCharacterReferences.cpp
)

ladybird_lib(LibWeb web EXPLICIT_SYMBOL_EXPORT)

target_link_libraries(LibWeb PRIVATE LibCore LibCompress LibCrypto LibJS LibHTTP LibGfx LibIPC LibRegex LibSyntax LibTextCodec LibUnicode LibMedia LibWasm LibXML LibIDL LibURL LibTLS LibRequests LibGC LibThreading skia ${ANGLE_TARGETS} SDL3::SDL3)

# FIXME: https://github.com/microsoft/vcpkg/issues/42324
target_include_directories(LibWeb PRIVATE ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include)

generate_js_bindings(LibWeb)

if (ENABLE_SWIFT)
    include(collections)

    set(generated_headers ${GENERATED_SOURCES})
    list(FILTER generated_headers INCLUDE REGEX "\\.h$")
    list(TRANSFORM generated_headers PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
    list(APPEND LIBWEB_ALL_GENERATED_HEADERS ${generated_headers})

    generate_clang_module_map(LibWeb GENERATED_FILES ${LIBWEB_ALL_GENERATED_HEADERS})

    target_sources(LibWeb PRIVATE
        HTML/Parser/HTMLToken.swift
        HTML/Parser/HTMLTokenizer.swift
        HTML/Parser/HTMLTokenizerHelpers.cpp
        HTML/Parser/SpeculativeHTMLParser.swift
    )
    target_link_libraries(LibWeb PRIVATE AK Collections)
    add_swift_target_properties(LibWeb LAGOM_LIBRARIES AK LibGfx LibGC)
endif()
